import Vue from 'vue'
import App from './App'

// 使用uViewUi
import uView from 'uview-ui'
// Vuex
import store from '@/store'

// 使用uni-simple-router
import { router, RouterMount } from '@/router'
// 缓存
import storage from '@/utils/storage'
// 请求全局配置
import request from '@/api/request'

// 全局过滤器
import filters from '@/utils/filter'
// 全局混入
import mixins from '@/utils/mixins'
// async await 的try catch优化
import to from '@/utils/to'

Vue.config.productionTip = false

App.mpType = 'app'

Vue.use(uView)
Vue.use(router)
Vue.use(request)
Vue.use(filters)
Vue.use(mixins)
Vue.use(storage)
Vue.prototype.$bus = new Vue()
Vue.prototype.$to = to

// 调用setConfig方法，方法内部会进行对象属性深度合并，可以放心嵌套配置
// 需要在Vue.use(uView)之后执行
uni.$u.setConfig({
  // 修改$u.config对象的属性
  config: {
    // 修改默认单位为rpx，相当于执行 uni.$u.config.unit = 'rpx'
    unit: 'px'
  },

  // 修改$u.props对象的属性
  props: {
    // 修改radio组件的size参数的默认值，相当于执行 uni.$u.props.radio.size = 30
    radio: {
      size: 15
    }
    // 其他组件属性配置
    // ......
  }
})

const app = new Vue({
  ...App,
  store
})
//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
// #ifdef H5
RouterMount(app, router, '#app')
// #endif

// #ifndef H5
app.$mount() //为了兼容小程序及app端必须这样写才有效果
// #endif
